<?php
use think\migration\Migrator;
use think\migration\db\Column;

class CreateMarketingVideoTables extends Migrator
{
    public function change()
    {
        // 营销视频统一任务表
        $this->table('marketing_video_unified_tasks', ['engine' => 'InnoDB'])
            // 任务基本信息
            ->addColumn('task_name', 'string', ['limit' => 100, 'comment' => '任务名称'])
            ->addColumn('user_id', 'integer', ['comment' => '创建者用户ID'])
            
            // 第一阶段：图片替换参数
            ->addColumn('avatar_id', 'string', ['limit' => 64, 'null' => true, 'comment' => '头像ID'])
            ->addColumn('product_image_file_id', 'string', ['limit' => 64, 'comment' => '产品图片文件ID'])
            ->addColumn('template_image_file_id', 'string', ['limit' => 64, 'null' => true, 'comment' => '模板图片文件ID'])
            ->addColumn('user_face_image_file_id', 'string', ['limit' => 64, 'null' => true, 'comment' => '用户人脸图片文件ID'])
            ->addColumn('image_edit_prompt', 'text', ['comment' => '图片编辑提示'])
            
            // 第一阶段：图片替换结果
            ->addColumn('replace_task_id', 'string', ['limit' => 64, 'null' => true, 'comment' => '图片替换任务ID'])
            ->addColumn('replace_status', 'integer', ['limit' => 1, 'default' => 0, 'comment' => '替换状态：0待处理,1处理中,2已完成,3失败'])
            ->addColumn('result_images', 'text', ['null' => true, 'comment' => '替换结果图片JSON'])
            ->addColumn('replace_error_msg', 'string', ['limit' => 255, 'null' => true, 'comment' => '替换错误信息'])
            
            // 第二阶段：图片转视频参数
            ->addColumn('selected_result_key', 'string', ['limit' => 64, 'null' => true, 'comment' => '选中的替换结果key'])
            ->addColumn('video_mode', 'string', ['limit' => 10, 'null' => true, 'comment' => '视频模式：lite/pro'])
            ->addColumn('image2video_prompt', 'text', ['null' => true, 'comment' => '视频生成提示'])
            ->addColumn('voiceover_id', 'string', ['limit' => 64, 'null' => true, 'comment' => '配音ID'])
            ->addColumn('tts_text', 'text', ['null' => true, 'comment' => '配音文本'])
            
            // 第二阶段：图片转视频结果
            ->addColumn('video_task_id', 'string', ['limit' => 64, 'null' => true, 'comment' => '视频生成任务ID'])
            ->addColumn('video_status', 'integer', ['limit' => 1, 'default' => 0, 'comment' => '视频状态：0待开始,1处理中,2已完成,3失败'])
            ->addColumn('preview_video_url', 'string', ['limit' => 255, 'null' => true, 'comment' => '预览视频URL'])
            ->addColumn('finished_video_url', 'string', ['limit' => 255, 'null' => true, 'comment' => '完成视频URL'])
            ->addColumn('video_error_msg', 'string', ['limit' => 255, 'null' => true, 'comment' => '视频生成错误信息'])
            
            // 任务整体状态
            ->addColumn('overall_status', 'integer', ['limit' => 1, 'default' => 1, 'comment' => '整体状态：1图片替换中,2图片替换完成,3视频生成中,4全部完成,5失败'])
            
            // 积分记录
            ->addColumn('replace_points_consumed', 'integer', ['default' => 0, 'comment' => '图片替换消耗积分'])
            ->addColumn('video_points_consumed', 'integer', ['default' => 0, 'comment' => '视频生成消耗积分'])
            ->addColumn('total_points_consumed', 'integer', ['default' => 0, 'comment' => '总消耗积分'])
            
            // 时间信息
            ->addColumn('create_time', 'timestamp', ['default' => 'CURRENT_TIMESTAMP', 'comment' => '创建时间'])
            ->addColumn('replace_complete_time', 'timestamp', ['null' => true, 'comment' => '图片替换完成时间'])
            ->addColumn('video_complete_time', 'timestamp', ['null' => true, 'comment' => '视频生成完成时间'])
            ->addColumn('update_time', 'timestamp', ['null' => true, 'comment' => '更新时间'])
            
            // 索引
            ->addIndex(['replace_task_id'])
            ->addIndex(['video_task_id'])
            ->addIndex(['user_id'])
            ->addIndex(['overall_status'])
            ->addIndex(['create_time'])
            ->create();
    }
} 